package com.ctakit.sdk.util;

import android.text.TextUtils;

import com.alibaba.fastjson.JSON;

import java.lang.reflect.Type;
import java.util.List;

/**
 * json对象映射工具类之fastjson封装
 *
 * @author andyhome
 */
public class JsonUtils {


    /**
     * 将对象转换成json字符串格式（默认将转换所有的属性）
     *
     * @return
     */
    public static String toJson(Object value) {
        if(value==null){
            if(value instanceof List){
                return "[]";
            }else{
                return "{}";
            }
        }

        return JSON.toJSONString(value);
    }


    /**
     * 将json字符串转换成对象
     */
    public static <T> T fromJson(String json, Class<T> clazz) {
        try {
            if(TextUtils.isEmpty(json)){
                return null;
            }
            return JSON.parseObject(json, clazz);
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }

    /**
     * 将json字符串转换成对象
     */
    public static <T> T fromJson(String json, Type type) {
        try {
            if(TextUtils.isEmpty(json)){
                return null;
            }
            return JSON.parseObject(json, type);
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }

    }

    /**
     * 将json字符串转换成数据对象
     */
    public static <T> List<T> fromJsonToList(String jsonVal, Class<T> clazz) {

        try {
            if(TextUtils.isEmpty(jsonVal)){
                return null;
            }
            return JSON.parseArray(jsonVal, clazz);
        } catch (Exception e) {
            return null;
        }

    }

}
